/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.tpj.database.zamestnanec;

import cz.tpj.util.ErrorDatabase;
import cz.tpj.util.Validation;

/**
 * Jedná se o třídu podle vzoru přepravka. Jednotlivé položky kopírují databázovou tabulku Zaměstnanec.
 * @author jabo
 */
public class Zamestnanec {
    private String id;
    private String login;
    private String pass;
    private String meno;
    private String priezvisko;

    /**
     * Konstruktor bez parametrů.
     */
    public Zamestnanec () {
    }

    /**
     * Konstruktor třídy zadávající při inicializaci všechny hodnoty. Pokud jedna z nich přesáhne
     * limit, pak je vyhozena vyjímka.
     * @param Id String odpovídající int ID uživatele, rozmezí 0 až 32767
     * @param Login String 3 až 45 znaků
     * @param Pass String 3 až 45 znaků
     * @param Meno String 3 až 30 znaků
     * @param Priezvisko String 3 až 30 znaků
     * @throws cz.tpj.util.ErrorDatabase
     */
    public Zamestnanec (String Id, String Login, String Pass, String Meno, String Priezvisko) throws ErrorDatabase {
        setId(Id);
        setLogin(Login);
        setPass(Pass);
        setMeno(Meno);
        setPriezvisko(Priezvisko);
    }

    /**
     * Databáze používá datový typ SMALLINT v rozsahu 0 do 32767. Pokud se překročí interval,
     * pak následuje vyjímka.
     * @param Id je ID zaměstnance typu int
     * @throws cz.tpj.util.ErrorDatabase
     */
    public void setId(String Id) throws ErrorDatabase {
        Validation val = new Validation();
        this.id = val.validatedNumber("Id", Id, 0, 32767);
    }

    /**
     * Vrací ID zaměstnance. Číslo je v intervalu 0 až 32767.
     * @return
     */
    public String getId() {
        return this.id;
    }

    /**
     * Nastavuje přihlašovací jméno zaměstnance. Jméno může mít 3 až 45 znaků.
     * V případě překročení je vyhozena vyjímka.
     * @param Login String
     * @throws cz.tpj.util.ErrorDatabase
     */
    public void setLogin(String Login) throws ErrorDatabase {
        //pokud se delka retezce nevejde do intervalu 3 az 45, pak vyhodi vyjimku.
        Validation val = new Validation();
        this.login = val.validatedString("Login", Login, 3, 45);
    }

    /**
     * Vrací přihlašovací jméno zaměstnance.
     * @return
     */
    public String getLogin() {
        return this.login;
    }

    /**
     * Nastavuje heslo uživatele. Heslo musí být v intervalu 3 až 45. Pokud není, pak vychodí vyjímku.
     * @param Pass
     * @throws cz.tpj.util.ErrorDatabase
     */
    public void setPass(String Pass) throws ErrorDatabase {
        Validation val = new Validation();
        this.pass = val.validatedString("Pass", Pass, 3, 45);
    }

    /**
     * Vrací heslo uživatele. Heslo je v rozmezí 3 až 45 znaků.
     * @return String
     */
    public String getPass() {
        return this.pass;
    }

    /**
     * Nastavuje jméno uživatele. Počet znaků musí být 0 až 30. Pokud se počet znaků překročí, pak
     * následuje vyjímka.
     * @param Meno řetězec
     * @throws cz.tpj.util.ErrorDatabase
     */
    public void setMeno(String Meno) throws ErrorDatabase {
        Validation val = new Validation();
        this.meno = val.validatedString("Meno", Meno, 0, 30);
    }

    /**
     * metoda pro nastaveni jmena
     * @return String vraci poze retezec o 20 znaku
     */
    public String getMeno () {
        return this.meno;
    }

    /**
     * Nastavuje přijmení uživatele. Počet znaků v přijmení musí být
     * v intervalu 0 až 30, jinak vyhodí vyjímku.
     * @param Priezvisko
     * @throws cz.tpj.util.ErrorDatabase
     */
    public void setPriezvisko(String Priezvisko) throws ErrorDatabase {
        Validation val = new Validation();
        this.priezvisko = val.validatedString("Priezvisko", Priezvisko, 0, 30);
    }

    /**
     * Vrací přijmení zaměstnance. Delka přijmení může být 0 až 30 znaků.
     * @return
     */
    public String getPriezvisko () {
        return this.priezvisko;
    }

}
